package 超市购物系统;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 对商品进行操作
 */
public class GoodsMethod {

    private static List<Goods> list = new ArrayList<>();//初始化存放商品列表
    private static List<Goods> goodsList = new ArrayList<>();//存放以存放购买商品的集合
    private static List<Integer> counts = new ArrayList<>();//存放integr类型的 集合

    public GoodsMethod(List<Goods> list){
        this.list = list;
    }

    public void show() {
        System.out.println("------------------------ 商品列表----------------------");
        System.out.println("商品id  名称  单位  计价单位");
        for (Goods good : list) {
            good.show();
        }
    }


    /**
     * 购买商品
     */
    public void buyGoods() {
        show();
        System.out.println("------------------------");
        System.out.println("请输入您要购买的商品项（输入格式：商品id-购买数量），输入end表示购买结束。");
        Scanner sc = new Scanner(System.in);
        addGoodList(sc);//购买商品方法  参数为scanner参数
        Test.demo();
    }

    public void jieSuan() {
        System.out.println("------------------------");
        System.out.println("    欢迎光临");
        System.out.println("名称    售价    数量    金额");
        System.out.println("-------------------------");
        int sum = 0;
        double result = 0;
        int len = goodsList.size();
        for(int i=0;i<len;i++) {
            Goods good = goodsList.get(i);
            // 数量
            int count = counts.get(i);
            System.out.println(good.getName() + "   "+good.getPrice()+"   "+count+"  "+(good.getPrice()*count));
            // 总数
            sum+=count;
            // 总金额
            result += (count*good.getPrice());
        }
        System.out.println("---------------------------");
        System.out.println(goodsList.size()+"项商品");
        System.out.println("共计：" + sum+"件");
        System.out.println("共："+result+ "元");
    }

    /**
     * 添加购买商品
     */
    public void addGoodList(Scanner sc) {
        while(true) {
            String one  = sc.next();
            if ("end".equals(one)) {
                System.out.println("购买结束");
                break;
            } else if(one.split("-").length != 2) {
                System.out.println("您的购买姿势不对，请换个姿势再来一次（格式：商品id-购买数量）");
                addGoodList(sc);//方法内调用方法
            } else if(!checkGoods(one.split("-")[0])) {
                System.out.println("您输入的商品id不存在 ，请重新输入！！！");
                addGoodList(sc);//递归
            } else {
                if (isCunZai(one)) {//如果输入的存在
                    addGoods(one);//存放商品
                } else {
                    Goods good = getObject(one.split("-")[0]);
                    goodsList.add(good);
                    counts.add(Integer.parseInt(one .split("-")[1]));
                }
            }
        }
    }


    /**
     * 检查商品是否存在
     */
    public boolean checkGoods(String id) {
        for (Goods goods : list) {
            if (id.equals(goods.getId())){
                return true;
            }
        }
        return false;
    }
//检查输入的商品ID是否存在于集合的id
    public Goods getObject(String id){
        for (Goods goods : list) {
            if (id.equals(goods.getId())){
                return goods;//如果存在则返回这个集合
            }
        }
        return null;
    }

//检查输入商品ID是否存在
    private boolean isCunZai(String num) {
        String id = num.split("-")[0];
        for (Goods goods : goodsList) {
            if (id.equals(goods.getId())){
                return true;
            }
        }
        return false;
    }

    /**
     * 添加购物车中已存在的商品
     */
    public void addGoods(String num) {
        String id = num.split("-")[0];
        int count = new Integer(num.split("-")[1]);
        for (int i=0;i<goodsList.size();i++){
            if (id.equals(goodsList.get(i).getId())){
                counts.set(i, counts.get(i)+count);
            }
        }
    }
}

